In a synthesizer multiple oscillators are usually mixed. This is a simple add-and-scale operation. The resulting waveform will contain the sum of the frequency spectra. Using other kind of 'combine' operation will create intersting new spectra.
In [55]:
%pylab inline
In [56]:
x = linspace(0, 10)
y1 = sin(x)
y2 = sin(1.25 * x)
def plot_all(x,y3):
grid(True)
plot(x,y1)
plot(x,y2)
plot(x,y3)
In [57]:
y3 = np.fmin(y1, y2)
plot_all(x,y3)
In [58]:
y3 = np.fmax(y1, y2)
plot_all(x,y3)
In [59]:
y3 = np.fmod(y1, y2)
plot_all(x,y3)
In [60]:
y3 = np.arctan2(y1, y2) / np.pi
plot_all(x,y3)
In [61]:
def fold(w1, w2):
w2a = math.fabs (w2);
if w1 > 0.0:
if w1 > w2a:
return w2a - (w1 - w2a)
else:
return w1
else:
if w1 < -w2a:
return -w2a - (w1 + w2a)
else:
return w1
vfold = np.vectorize(fold)
y3 = vfold(y1, y2)
plot_all(x,y3)
In [61]: